using Digitalmes.Domain.Entities.Mes.Masters;

namespace Digitalmes.Domain.Entities.Mes.Processes;

/// <summary>
/// 工序物料。
/// </summary>
/// <remarks>工艺路线中各步骤需要使用的物料（关键物料/批次料）</remarks>
[SugarTable("proc_step_material")]
public sealed class ProcStepMaterial : AuditedEntity
{
    /// <summary>
    /// 关联的工艺步骤 ID
    /// </summary>
    public long StepId { get; set; }

    /// <summary>
    /// 物料 Id
    /// </summary>
    public long MaterialId { get; set; }

    /// <summary>
    /// 物料
    /// </summary>
    [Navigate(NavigateType.OneToOne, nameof(MaterialId))]
    public MdMaterial? Material { get; set; }

    /// <summary>
    /// 使用数量。
    /// </summary>
    public int Qty { get; set; }

    /// <summary>
    /// 上料顺序号，0 表示不需要按顺序上料。
    /// </summary>
    public int Seq { get; set; }

    /// <summary>
    /// 是否检查物料来源
    /// </summary>
    public bool IsCheckSource { get; set; }

    /// <summary>
    /// 校验物料来源产线 Id 集合，指定时表示会校验物料作为产品在此产线上有完工下线，未设置表示物料作为产品有任何完工下线信息即可。
    /// </summary>
    [SugarColumn(IsJson = true)]
    public long[]? SourceLineIds { get; set; }
}
